package utils
{

	public class FunctionMark
	{
		public static const FUNC_MARK : String = "function ";

		public static const NOTE1_MARK : String = "//";

		public static const NOTE2_MARK : String = "/*";

		public static const NOTE3_MARK : String = "*/";


		public function FunctionMark()
		{
		}

		/**
		 * 为字符串中的函数打上标记
		 * @param content
		 * @return
		 */
		public static function makeMark(content : String, fileName : String) : String
		{
			var index : int = 0;
			//( 位置
			var indexK0 : int;
			//{ 位置
			var indexK1 : int;

			var functionName : String;

			while (index < content.length && index >= 0)
			{
				switch (content.charAt(index))
				{
					//搜索 function
					case "f":
						var firstWord : String = content.substr(index, FUNC_MARK.length);
						if (firstWord == FUNC_MARK)
						{
							indexK0 = content.indexOf("(", index + FUNC_MARK.length);
							if (indexK0 > 0)
							{
								functionName = content.substring(index + FUNC_MARK.length, indexK0);
								var functionNames : Array = functionName.split(" ");
								//判断 functionName 是否为合理的函数名
								if (functionNames.length == 1 || (functionNames.length == 2 && (functionNames[0] == "set" || functionNames[0] == "get")))
								{
									indexK1 = content.indexOf("{", indexK0);
									if (indexK1 > 0)
									{
										content = content.substr(0, indexK1 + 1) + '\nfunctionMarkTrace("' + fileName + '","' + functionName + '");' + content.substr(indexK1 + 1);
									}
								}
							}
						}
						break;
					//跳过注释
					case "/":

						break;
				}
				index++;
			}
			return content;
		}
	}
}
